package com.tiancheng.trade.settlement.service.settlement;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tiancheng.trade.commom.core.data.PageInfo;
import com.tiancheng.trade.commom.core.data.Result;
import com.tiancheng.trade.settlement.bo.*;
import com.tiancheng.trade.settlement.model.settlement.SRevenueDetail;
import com.tiancheng.trade.settlement.vo.settlement.admin.BaseRevenueQueryVo;
import com.tiancheng.trade.settlement.vo.settlement.api.NcCloudReqVO;
import com.tiancheng.trade.settlement.vo.settlement.api.NcCloudResVO;
import com.tiancheng.trade.settlement.vo.settlement.api.TallyOrderServiceSuccessVO;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * @Auther: Likailun
 * @Date: 11:12 2021/4/25
 * @Description: 收入明细service
 */
public interface ISRevenueDetailService  extends IService<SRevenueDetail> {
    /**
     * 订单服务成功处理
     * @param bo
     */
    void subOrderSuccess(TallyOrderServiceSuccessVO bo);

    List<SRevenueDetail> findByOrderIdAndSubOrderIds(String orderId,List<String> subOrderIds);

    /**
     * 收入汇总信息
     * @param revenueQueryVo
     * @return
     */
    List<SRevenueSummaryBO> revenueSummary(BaseRevenueQueryVo revenueQueryVo);

    /**
     *
     * @param revenueQueryVo
     * @return
     */
    PageInfo<SRevenueDetailQueryResBo> revenueDetail(BaseRevenueQueryVo revenueQueryVo);

    /**
     * 导出对账明细
     * @param revenueQueryVo 查询条件
     * @return
     */
    Result exportDetail(BaseRevenueQueryVo revenueQueryVo, HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, IOException;

    /**
     * 导出对账汇总
     * @param revenueQueryVo 查询条件
     * @return
     */
    Result exportSummary(BaseRevenueQueryVo revenueQueryVo,HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, IOException;

    /**
     * 商户+场景纬度纬度汇总对账函信息
     * @param queryVo
     * @return
     */
    List<SRevenueSettleLettersMerchantBo> summarySettleLettersMerchantInfo(SSettleLettersDetailQueryBO queryVo);


    /**
     * 商户+场景纬度纬度汇总对账函信息-对应明细
     * @param queryBO
     * @return
     */
    List<SRevenueSettleLettersMerchantDetailBo> detailSettleLettersMerchantInfo(SSettleLettersDetailQueryBO queryBO);


    /**
     * nc取数
     * @param ncCloudReqVO
     * @return
     */
    PageInfo<NcCloudResVO> ncCloudGet(NcCloudReqVO ncCloudReqVO);
}
